package com.qfedu.mavenk.dao;

import com.qfedu.mavenk.been.Student;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.HashMap;
import java.util.List;

/**
 * @author:huayuzhuo
 * @email:2798866329@qq.com
 * @desc: student接口
 * @datatime: 2022/10/10 10:02
 */
public interface StudentMapper {
    /**
     * 查询学生信息
     * @param name
     * @return
     */
    Student seletStuByName (String name);

    /**
     * 根据id查询学生信息，返回结果是hashmap
     * @param id
     * @return
     */
            //参数只有一个时可以随便写入
            //想要传两个参数进去，那么就要给参数名添加注解另起别名，供xml配置文件读取，实现类就可以直接输入这两个参数
            //不使用@Param(""),那么在xml配置里，可以填arg[0]和arg[1]来获取id和name值
    HashMap selectStuById (@Param("id") int id, @Param("name") String name);

    /**
     * 修改学生信息
     * @param stu
     */
    int updateStuIufo (Student stu);

    /**
     * 添加学生信息
     * @param stu
     */
    int addStu (Student stu);

    /**
     * 通过模糊查询出所有名字里有这个字的学生
     * @param name
     * @return
     */
    List<Student> selectAllByFirstName(String name);

    /**
     * 统计查看一共有多少学生记录
     * @return
     */
    int getRecordsCount();

    /**
     * 查询某个学生的基本信息和班级信息
     * @param stu_number
     * @return
     */
    Student getStuAndClassInfo(String stu_number);

    /**
     * 查询所有的学生，并根据条件排序
     * @param param 根据哪个列来排序
     * @param order 排序的规则   asc|desc
     * @return
     */
    List<Student> queryAllAndOrder(@Param("column") String param,@Param("order_name") String order);

    /**
     * 使用注解的方式编写sql语句,更改学生姓名
     * @param student
     * @return
     */
    @Update("update stu_info set name = #{name} where id = #{id}")
    int updateStudent(Student student);
}
